home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / machserver / 1.098 / include / tcl.h < prev    next >
C/C++ Source or Header  |  1991-05-30  |  12KB  |  297 lines

  1. /*
  2.  * tcl.h --
  3.  *
  4.  *    This header file describes the externally-visible facilities
  5.  *    of the Tcl interpreter.
  6.  *
  7.  * Copyright 1987-1991 Regents of the University of California
  8.  * Permission to use, copy, modify, and distribute this
  9.  * software and its documentation for any purpose and without
  10.  * fee is hereby granted, provided that the above copyright
  11.  * notice appear in all copies.  The University of California
  12.  * makes no representations about the suitability of this
  13.  * software for any purpose.  It is provided "as is" without
  14.  * express or implied warranty.
  15.  *
  16.  * $Header: /sprite/src/lib/tcl/RCS/tcl.h,v 1.46 91/05/29 11:54:48 ouster Exp $ SPRITE (Berkeley)
  17.  */
  18.  
  19. #ifndef _TCL
  20. #define _TCL
  21.  
  22. /*
  23.  * Definitions that allow this header file to be used either with or
  24.  * without ANSI C features like function prototypes.
  25.  */
  26.  
  27. #undef _ANSI_ARGS_
  28. #undef const
  29. #if defined(USE_ANSI) && defined(__STDC__)
  30. #   define _ANSI_ARGS_(x)    x
  31. #else
  32. #   define _ANSI_ARGS_(x)    ()
  33. #   define const
  34. #endif
  35.  
  36. /*
  37.  * Miscellaneous declarations (to allow Tcl to be used stand-alone,
  38.  * without the rest of Sprite).
  39.  */
  40.  
  41. #ifndef NULL
  42. #define NULL 0
  43. #endif
  44.  
  45. #ifndef _CLIENTDATA
  46. typedef int *ClientData;
  47. #define _CLIENTDATA
  48. #endif
  49.  
  50. /*
  51.  * Data structures defined opaquely in this module.  The definitions
  52.  * below just provide dummy types.  A few fields are made visible in
  53.  * Tcl_Interp structures, namely those for returning string values.
  54.  * Note:  any change to the Tcl_Interp definition below must be mirrored
  55.  * in the "real" definition in tclInt.h.
  56.  */
  57.  
  58. typedef struct {
  59.     char *result;        /* Points to result string returned by last
  60.                  * command. */
  61.     int dynamic;        /* Non-zero means result is dynamically-
  62.                  * allocated and must be freed by Tcl_Eval
  63.                  * before executing the next command. */
  64.     int errorLine;        /* When TCL_ERROR is returned, this gives
  65.                  * the line number within the command where
  66.                  * the error occurred (1 means first line). */
  67. } Tcl_Interp;
  68.  
  69. typedef int *Tcl_Trace;
  70. typedef int *Tcl_CmdBuf;
  71.  
  72. /*
  73.  * When a TCL command returns, the string pointer interp->result points to
  74.  * a string containing return information from the command.  In addition,
  75.  * the command procedure returns an integer value, which is one of the
  76.  * following:
  77.  *
  78.  * TCL_OK        Command completed normally;  interp->result contains
  79.  *            the command's result.
  80.  * TCL_ERROR        The command couldn't be completed successfully;
  81.  *            interp->result describes what went wrong.
  82.  * TCL_RETURN        The command requests that the current procedure
  83.  *            return;  interp->result contains the procedure's
  84.  *            return value.
  85.  * TCL_BREAK        The command requests that the innermost loop
  86.  *            be exited;  interp->result is meaningless.
  87.  * TCL_CONTINUE        Go on to the next iteration of the current loop;
  88.  *            interp->result is meaninless.
  89.  */
  90.  
  91. #define TCL_OK        0
  92. #define TCL_ERROR    1
  93. #define TCL_RETURN    2
  94. #define TCL_BREAK    3
  95. #define TCL_CONTINUE    4
  96.  
  97. #define TCL_RESULT_SIZE 199
  98.  
  99. /*
  100.  * Flag values passed to Tcl_Eval (see the man page for details;  also
  101.  * see tclInt.h for additional flags that are only used internally by
  102.  * Tcl):
  103.  */
  104.  
  105. #define TCL_BRACKET_TERM    1
  106.  
  107. /*
  108.  * Flag value passed to Tcl_RecordAndEval to request no evaluation
  109.  * (record only).
  110.  */
  111.  
  112. #define TCL_NO_EVAL        -1
  113.  
  114. /*
  115.  * Flag values passed to Tcl_Return (see the man page for details):
  116.  */
  117.  
  118. #define TCL_STATIC    0
  119. #define TCL_DYNAMIC    1
  120. #define TCL_VOLATILE    2
  121.  
  122. /*
  123.  * Operation values passed to Tcl_TraceVar, and also passed back to
  124.  * watchers.  Don't change the values below without checking for overlap
  125.  * with values defined for variable flags in tclInt.h!
  126.  */
  127.  
  128. #define TCL_TRACE_READS        1
  129. #define TCL_TRACE_WRITES    2
  130. #define TCL_TRACE_DELETES    4
  131.  
  132. /*
  133.  * Additional flag passed back to variable watchers.  This flag must
  134.  * not overlap any of the TCL_TRACE_* flags defined above or the
  135.  * VAR_* flags defined in tclInt.h.
  136.  */
  137.  
  138. #define TCL_VARIABLE_UNDEFINED    8
  139.  
  140. /*
  141.  * Exported Tcl procedures:
  142.  */
  143.  
  144. typedef int (*Tcl_CmdProc) _ANSI_ARGS_((ClientData clientData,
  145.     Tcl_Interp *interp, int argc, char *argv[]));
  146. typedef void (*Tcl_CmdDeleteProc) _ANSI_ARGS_((ClientData clientData));
  147. typedef void (*Tcl_CmdTraceProc) _ANSI_ARGS_((ClientData clientData,
  148.     Tcl_Interp *interp, int level, char *command, Tcl_CmdProc proc,
  149.     ClientData cmdClientData, int argc, char *argv[]));
  150. typedef char *(*Tcl_VarTraceProc) _ANSI_ARGS_((ClientData clientData,
  151.     Tcl_Interp *interp, char *varName, int global, int flags,
  152.     char *oldValue, char *newValue));
  153.  
  154. extern void        Tcl_AppendResult();
  155. extern char *        Tcl_AssembleCmd _ANSI_ARGS_((Tcl_CmdBuf buffer,
  156.                 char *string));
  157. extern void        Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp *interp,
  158.                 char *message));
  159. extern char        Tcl_Backslash _ANSI_ARGS_((char *src,
  160.                 int *readPtr));
  161. extern char *        Tcl_Concat _ANSI_ARGS_((int argc, char **argv));
  162. extern Tcl_CmdBuf    Tcl_CreateCmdBuf _ANSI_ARGS_((void));
  163. extern void        Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp *interp,
  164.                 char *cmdName, Tcl_CmdProc proc,
  165.                 ClientData clientData,
  166.                 Tcl_CmdDeleteProc deleteProc));
  167. extern Tcl_Interp *    Tcl_CreateInterp _ANSI_ARGS_((void));
  168. extern Tcl_Trace    Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp *interp,
  169.                 int level, void (*proc)(ClientData clientData,
  170.                 Tcl_Interp *interp, int level,
  171.                 char *command, Tcl_CmdProc proc,
  172.                 ClientData cmdClientData, int argc,
  173.                 char *argv[]),
  174.                 ClientData clientData));
  175. extern void        Tcl_DeleteCmdBuf _ANSI_ARGS_((Tcl_CmdBuf buffer));
  176. extern void        Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp *interp,
  177.                 char *cmdName));
  178. extern void        Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp *interp));
  179. extern void        Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp *interp,
  180.                 Tcl_Trace trace));
  181. extern int        Tcl_Eval _ANSI_ARGS_((Tcl_Interp *interp, char *cmd,
  182.                 int flags, char **termPtr));
  183. extern int        Tcl_ExprBool _ANSI_ARGS_((Tcl_Interp *interp,
  184.                 char *string, int *ptr));
  185. extern int        Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp *interp,
  186.                 char *string, double *ptr));
  187. extern int        Tcl_ExprInt _ANSI_ARGS_((Tcl_Interp *interp,
  188.                 char *string, int *ptr));
  189. extern int        Tcl_ExprString _ANSI_ARGS_((Tcl_Interp *interp,
  190.                 char *string));
  191. extern int        Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp *interp,
  192.                 char *string, int *boolPtr));
  193. extern int        Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp *interp,
  194.                 char *string, double *doublePtr));
  195. extern int        Tcl_GetInt _ANSI_ARGS_((Tcl_Interp *interp,
  196.                 char *string, int *intPtr));
  197. extern char *        Tcl_GetVar _ANSI_ARGS_((Tcl_Interp *interp,
  198.                 char *varName, int global));
  199. extern char *        Tcl_Merge _ANSI_ARGS_((int argc, char **argv));
  200. extern char *        Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp *interp,
  201.                 char *string, char **termPtr));
  202. extern int        Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp *interp,
  203.                 char *cmd, int flags));
  204. extern void        Tcl_Return _ANSI_ARGS_((Tcl_Interp *interp,
  205.                 char *string, int status));
  206. extern void        Tcl_SetVar _ANSI_ARGS_((Tcl_Interp *interp,
  207.                 char *varName, char *newValue, int global));
  208. extern int        Tcl_SplitList _ANSI_ARGS_((Tcl_Interp *interp,
  209.                 char *list, int *argcPtr, char ***argvPtr));
  210. extern int        Tcl_StringMatch _ANSI_ARGS_((char *string,
  211.                 char *pattern));
  212. extern char *        Tcl_TildeSubst _ANSI_ARGS_((Tcl_Interp *interp,
  213.                 char *name));
  214. extern int        Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp *interp,
  215.                 char *varName, int global, int flags,
  216.                 Tcl_VarTraceProc proc, ClientData clientData));
  217. extern void        Tcl_UnTraceVar _ANSI_ARGS_((Tcl_Interp *interp,
  218.                 char *varName, int global));
  219. extern int        Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp *interp,
  220.                 char *varName, int global,
  221.                 Tcl_VarTraceProc *procPtr,
  222.                 ClientData *clientDataPtr));
  223.  
  224. /*
  225.  * Built-in Tcl command procedures:
  226.  */
  227.  
  228. extern int        Tcl_BreakCmd _ANSI_ARGS_((ClientData clientData,
  229.                 Tcl_Interp *interp, int argc, char *argv[]));
  230. extern int        Tcl_CaseCmd _ANSI_ARGS_((ClientData clientData,
  231.                 Tcl_Interp *interp, int argc, char *argv[]));
  232. extern int        Tcl_CatchCmd _ANSI_ARGS_((ClientData clientData,
  233.                 Tcl_Interp *interp, int argc, char *argv[]));
  234. extern int        Tcl_ConcatCmd _ANSI_ARGS_((ClientData clientData,
  235.                 Tcl_Interp *interp, int argc, char *argv[]));
  236. extern int        Tcl_ContinueCmd _ANSI_ARGS_((ClientData clientData,
  237.                 Tcl_Interp *interp, int argc, char *argv[]));
  238. extern int        Tcl_ErrorCmd _ANSI_ARGS_((ClientData clientData,
  239.                 Tcl_Interp *interp, int argc, char *argv[]));
  240. extern int        Tcl_EvalCmd _ANSI_ARGS_((ClientData clientData,
  241.                 Tcl_Interp *interp, int argc, char *argv[]));
  242. extern int        Tcl_ExecCmd _ANSI_ARGS_((ClientData clientData,
  243.                 Tcl_Interp *interp, int argc, char *argv[]));
  244. extern int        Tcl_ExprCmd _ANSI_ARGS_((ClientData clientData,
  245.                 Tcl_Interp *interp, int argc, char *argv[]));
  246. extern int        Tcl_FileCmd _ANSI_ARGS_((ClientData clientData,
  247.                 Tcl_Interp *interp, int argc, char *argv[]));
  248. extern int        Tcl_ForCmd _ANSI_ARGS_((ClientData clientData,
  249.                 Tcl_Interp *interp, int argc, char *argv[]));
  250. extern int        Tcl_ForeachCmd _ANSI_ARGS_((ClientData clientData,
  251.                 Tcl_Interp *interp, int argc, char *argv[]));
  252. extern int        Tcl_FormatCmd _ANSI_ARGS_((ClientData clientData,
  253.                 Tcl_Interp *interp, int argc, char *argv[]));
  254. extern int        Tcl_GlobCmd _ANSI_ARGS_((ClientData clientData,
  255.                 Tcl_Interp *interp, int argc, char *argv[]));
  256. extern int        Tcl_GlobalCmd _ANSI_ARGS_((ClientData clientData,
  257.                 Tcl_Interp *interp, int argc, char *argv[]));
  258. extern int        Tcl_HistoryCmd _ANSI_ARGS_((ClientData clientData,
  259.                 Tcl_Interp *interp, int argc, char *argv[]));
  260. extern int        Tcl_IfCmd _ANSI_ARGS_((ClientData clientData,
  261.                 Tcl_Interp *interp, int argc, char *argv[]));
  262. extern int        Tcl_InfoCmd _ANSI_ARGS_((ClientData clientData,
  263.                 Tcl_Interp *interp, int argc, char *argv[]));
  264. extern int        Tcl_IndexCmd _ANSI_ARGS_((ClientData clientData,
  265.                 Tcl_Interp *interp, int argc, char *argv[]));
  266. extern int        Tcl_LengthCmd _ANSI_ARGS_((ClientData clientData,
  267.                 Tcl_Interp *interp, int argc, char *argv[]));
  268. extern int        Tcl_ListCmd _ANSI_ARGS_((ClientData clientData,
  269.                 Tcl_Interp *interp, int argc, char *argv[]));
  270. extern int        Tcl_PrintCmd _ANSI_ARGS_((ClientData clientData,
  271.                 Tcl_Interp *interp, int argc, char *argv[]));
  272. extern int        Tcl_ProcCmd _ANSI_ARGS_((ClientData clientData,
  273.                 Tcl_Interp *interp, int argc, char *argv[]));
  274. extern int        Tcl_RangeCmd _ANSI_ARGS_((ClientData clientData,
  275.                 Tcl_Interp *interp, int argc, char *argv[]));
  276. extern int        Tcl_RenameCmd _ANSI_ARGS_((ClientData clientData,
  277.                 Tcl_Interp *interp, int argc, char *argv[]));
  278. extern int        Tcl_ReturnCmd _ANSI_ARGS_((ClientData clientData,
  279.                 Tcl_Interp *interp, int argc, char *argv[]));
  280. extern int        Tcl_ScanCmd _ANSI_ARGS_((ClientData clientData,
  281.                 Tcl_Interp *interp, int argc, char *argv[]));
  282. extern int        Tcl_SetCmd _ANSI_ARGS_((ClientData clientData,
  283.                 Tcl_Interp *interp, int argc, char *argv[]));
  284. extern int        Tcl_SourceCmd _ANSI_ARGS_((ClientData clientData,
  285.                 Tcl_Interp *interp, int argc, char *argv[]));
  286. extern int        Tcl_StringCmd _ANSI_ARGS_((ClientData clientData,
  287.                 Tcl_Interp *interp, int argc, char *argv[]));
  288. extern int        Tcl_TimeCmd _ANSI_ARGS_((ClientData clientData,
  289.                 Tcl_Interp *interp, int argc, char *argv[]));
  290. extern int        Tcl_TraceCmd _ANSI_ARGS_((ClientData clientData,
  291.                 Tcl_Interp *interp, int argc, char *argv[]));
  292. extern int        Tcl_UplevelCmd _ANSI_ARGS_((ClientData clientData,
  293.                 Tcl_Interp *interp, int argc, char *argv[]));
  294. extern int        Tcl_VarEval();
  295.  
  296. #endif /* _TCL */
  297.